//
//  IcMaterialDetailViewController.m
//  IceClear
//
//  Created by P & C on 11-03-25.
//  Copyright 2011 __MyCompanyName__. All rights reserved.
//

#import "IcMaterialDetailViewController.h"


@implementation IcMaterialDetailViewController

@synthesize material;
@synthesize appModelsManager;


#pragma mark -
#pragma mark Initialization

/*
- (id)initWithStyle:(UITableViewStyle)style {
    // Override initWithStyle: if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad.
    self = [super initWithStyle:style];
    if (self) {
        // Custom initialization.
    }
    return self;
}
*/


#pragma mark -
#pragma mark View lifecycle

- (void)viewDidLoad {
    [super viewDidLoad];
	
	self.view.backgroundColor = [UIColor clearColor];

    // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
    // self.navigationItem.rightBarButtonItem = self.editButtonItem;
}

/*
- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
}
*/
/*
- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
}
*/
/*
- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
}
*/
/*
- (void)viewDidDisappear:(BOOL)animated {
    [super viewDidDisappear:animated];
}
*/
/*
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations.
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
*/


#pragma mark -
#pragma mark Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    // Return the number of sections.
    return 2;
}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    // Return the number of rows in the section.
    if (section == 0) {
		return 5;
	}
	else if (section == 1) {
		return [self.material.suggestedProducts count];
	}
	
	return 0;
}


// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    
    static NSString *CellIdentifier = @"Cell";
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
    
    // Configure the cell...
    NSString* text = @"Nothing yet...";
	NSMutableString* strbuilder = [NSMutableString string];
	
	if (indexPath.section == 0) {
		switch (indexPath.row) {
			case 0:
				text = self.material.details;
				
				cell.textLabel.text = text;
				cell.textLabel.font = [UIFont systemFontOfSize:15];
				cell.textLabel.numberOfLines = 0;
				cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
				break;
			case 1:
				if ([self.material.usageTypesGoodFor containsObject:[NSNumber numberWithInt:1]]) {
					[strbuilder appendString:@"Anti-ices"];
				}
				if ([self.material.usageTypesGoodFor containsObject:[NSNumber numberWithInt:0]]) {
					[strbuilder appendString:([strbuilder length] > 0 ? @" & De-ices" : @"De-ices")];
				}
				
				text = strbuilder;
				cell.textLabel.text = text;
				cell.textLabel.font = [UIFont systemFontOfSize:15];
				break;
			case 2:
				for (NSNumber * n in self.material.facilityTypesGoodFor) {
					if ([strbuilder length] > 0) {
						[strbuilder appendString:@", "];
					}
					[strbuilder appendString:[self.appModelsManager.recommendationsManager facilityOfType:[n intValue]]];
				}
				
				text = [NSString stringWithFormat:@"Works on: %@", strbuilder];
				cell.textLabel.text = text;
				cell.textLabel.font = [UIFont systemFontOfSize:15];
				
				//[cell.textLabel sizeToFit];
				//[cell sizeToFit];
				break;
			case 3:
				for (NSNumber * n in self.material.precipitationTypesGoodFor) {
					if ([strbuilder length] > 0) {
						[strbuilder appendString:@", "];
					}
					[strbuilder appendString:[self.appModelsManager.recommendationsManager precipitationOfType:[n intValue]]];
				}
				
				text = [NSString stringWithFormat:@"Handles: %@", strbuilder];
				cell.textLabel.text = text;
				cell.textLabel.font = [UIFont systemFontOfSize:15];
				break;
			case 4:
				text = [NSString stringWithFormat:@"Effective down to around: %d C", self.material.lowestPracticalTemperature];
				cell.textLabel.text = text;
				cell.textLabel.font = [UIFont systemFontOfSize:15];
				break;
				
			default:
				break;
		}
	}
	else if (indexPath.section == 1) {
		text = [[self.material.suggestedProducts objectAtIndex:indexPath.row] objectAtIndex:0];
		cell.textLabel.text = text;
	}
	
    return cell;
}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
	NSString* t = @"";
	
	switch (section) {
		case 0:
			t = self.material.title;
			break;
		case 1:
			t = @"Recommended Products";			
		default:
			break;
	}

	return t;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
	float val = 40;
	
	if (indexPath.section == 0) {
		float maxWidth;
		UIFont* aFont;
		
		switch (indexPath.row) {
			case 0:
				maxWidth = 300.0f;
				aFont = [UIFont systemFontOfSize:15.0f];
				
				CGSize withinSize = CGSizeMake(maxWidth, CGFLOAT_MAX);
				CGSize size = [self.material.details sizeWithFont:aFont constrainedToSize:withinSize 
													lineBreakMode:UILineBreakModeWordWrap];
				
				val = size.height + 20.0f;
				break;
				
			default:
				break;
		}
	}
	
	return val;
}



/*
// Override to support conditional editing of the table view.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
    // Return NO if you do not want the specified item to be editable.
    return YES;
}
*/


/*
// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        // Delete the row from the data source.
        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
    }   
    else if (editingStyle == UITableViewCellEditingStyleInsert) {
        // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view.
    }   
}
*/


/*
// Override to support rearranging the table view.
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
}
*/


/*
// Override to support conditional rearranging of the table view.
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
    // Return NO if you do not want the item to be re-orderable.
    return YES;
}
*/


#pragma mark -
#pragma mark Table view delegate

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
	[tableView deselectRowAtIndexPath:indexPath animated:NO];
	
    if (indexPath.section == 1) {
		[[UIApplication sharedApplication] openURL:[[self.material.suggestedProducts objectAtIndex:indexPath.row] 
													objectAtIndex:1]];
	}
}

- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath {
	if (indexPath.section == 0) {
		return nil;
	}
	else {
		return indexPath;
	}
	
}


#pragma mark -
#pragma mark Memory management

- (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];
    
    // Relinquish ownership any cached data, images, etc. that aren't in use.
}

- (void)viewDidUnload {
    // Relinquish ownership of anything that can be recreated in viewDidLoad or on demand.
    // For example: self.myOutlet = nil;
}


- (void)dealloc {
	[material release];
	[appModelsManager release];
    [super dealloc];
}


@end

